「高可用性システムの設計」の説明に従ってレプリケーション・スキームを設計した後、SQL文CREATE REPLICATIONを使用してそのスキームをデータ・ストアに適用できます。
CREATE REPLICATION文の完全な構文については、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』のCREATE REPLICATIONに関する項を参照してください。例3.1に、単純なレプリケーション・スキームの構成およびこの項の内容に関連するパラメータを示します。
レプリケーション・スキームの広範な例は、「レプリケーション・スキームの例」を参照してください。
データ・ストアで使用されるレプリケーション・スキームは、TTREP表に示され、システムが再起動されるまで有効です。TTREP表の詳細は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』のシステムおよびレプリケーション表に関する章を参照してください。
レプリケーション・スキームとレプリケーション表の所有者および名前は、マスターおよびサブスクライバの両方のデータ・ストアで同じである必要があります。すべてのデータ・ストアの所有者を共通にするには、CREATE REPLICATION文にレプリケーション・スキーム名とともに所有者名を明示的に指定します。
たとえば、repschemeという名前のレプリケーション・スキームにreplという名前の所有者を割り当てる場合、CREATE REPLICATION文の先頭行は次のようになります。
CREATE REPLICATION repl.repschemeレプリケーション・スキームおよびレプリケート表の名前から所有者を省略した場合、デフォルトの所有者名(リクエスト・ユーザーのログイン名またはDSNのUID属性で設定されている名前)がかわりに使用されます。所有者名がデータ・ストア間で異なっている場合、レプリケーション・スキームは機能しません。
レプリケーション・スキームは、1つ以上のELEMENT記述で構成されます。ELEMENT記述には、要素の名前、そのタイプ(DATASTOREまたはTABLE)、更新が行われるマスター・データ・ストア、更新がレプリケートされるサブスクライバ・データ・ストアが含まれます。
後でALTER REPLICATION文を使用して要素またはそのパラメータの削除または変更を行う場合は、スキーム内の各要素の名前を使用して要素を識別できます。要素名は、レプリケーション・スキーム内で一意である必要があります。
禁止事項
複数のサブスクライバ・スキームに要素を定義する正しい方法については、「複数サブスクライバ・スキーム」を参照してください。要素を伝播する正しい方法については、「伝播スキーム」を参照してください。
ALTER REPLICATION文を使用すると、既存のレプリケーション・スキームに表、キャッシュ・グループおよびデータ・ストアを追加できます(「レプリケーション・スキームの変更」を参照)。また、既存のレプリケーション・スキームのデータ・ストアから表を削除することもできます(「レプリケーション・スキームからの表の削除」を参照)。
この項の後半では、次の内容について説明します。
マスター・データ・ストア(masterds)のすべての内容(すべての表)をサブスクライバ・データ・ストア(subscriberds)にレプリケートする場合、ELEMENT記述(dsl)は次のようになります。
ELEMENT ds1 DATASTORE MASTER masterds ON "system1" SUBSCRIBER subscriberds ON "system2"CREATE REPLICATION文のEXCLUDE TABLEおよびEXCLUDE CACHE GROUP句を使用すると、データ・ストア要素からの特定の表およびキャッシュ・グループの除外を選択できます。EXCLUDE句を使用すると、EXCLUDE句に指定されたオブジェクトを除くデータ・ストア全体がレプリケートされます。オブジェクトの種類(表またはキャッシュ・グループ)ごとに1つのみのEXCLUDE句を使用します。次に例を示します。
ELEMENT ds1 DATASTORE MASTER masterds ON "system1" SUBSCRIBER subscriberds ON "system2" EXCLUDE TABLE tab1, tab2 EXCLUDE CACHE GROUP cg3CREATE REPLICATION文のINCLUDE TABLEおよびINCLUDE CACHE GROUP句を使用すると、データ・ストア要素への特定の表およびキャッシュ・グループのみの挿入を選択できます。INCLUDE句を使用すると、INCLUDE句に指定されたオブジェクトのみがレプリケートされます。オブジェクトの種類(表またはキャッシュ・グループ)ごとに1つのみのINCLUDE句を使用します。次に例を示します。
ELEMENT ds1 DATASTORE MASTER masterds ON "system1" SUBSCRIBER subscriberds ON "system2" INCLUDE TABLE tab3 INCLUDE CACHE GROUP cg1, cg2
表repl.tab1およびrepl.tab2を(masterdsという名前でホストsystem1に配置されている)マスター・データ・ストアから(subscriberdsという名前でホストsystem2に配置されている)サブスクライバ・データ・ストアにレプリケートする場合、ELEMENT記述(aおよびb)は次のようになります。
ELEMENT a TABLE repl.tab1 MASTER masterds ON "system1" SUBSCRIBER subscriberds ON "system2" ELEMENT b TABLE repl.tab2 MASTER masterds ON "system1" SUBSCRIBER subscriberds ON "system2"
データ・ストア・ホストは、そのIPアドレスまたはそのホスト名で識別できます。IPアドレスにホスト名を割当てる方法の詳細は、「ホストIPアドレスの設定」を参照してください。
表の要素記述には、追加のパラメータを含めることができます。次の項では、それらのパラメータについて説明します。
データ・ストアが双方向レプリケーションに設定されている場合、複数のデータ・ストアの同一表行が個別に同時に更新されると、レプリケーション競合が発生する可能性があります。
このような競合は、レプリケート表にタイムスタンプを含め、表のELEMENT記述にオプションのCHECK CONFLICTS句を指定してレプリケーション・スキームを設定することによって、表単位で検出および解消できます。
レプリケーション競合およびCREATE REPLICATION文へのCHECK CONFLICTS句の設定方法の詳細は、「レプリケーション競合の検出および解消」を参照してください。
デフォルトでは、マスター・データ・ストアのログ・バッファ内のトランザクション・レコードは、サブスクライバに転送される前にディスクにフラッシュされます(「レプリケーションの動作」を参照)。マスター・データ・ストア全体をレプリケートする(ELEMENTのタイプがDATASTOREである)場合、マスターのログをディスクにフラッシュする処理をレプリケーション・サイクルから除くことによって、レプリケーション・パフォーマンスを向上できます。これを実現するには、ELEMENT記述にTRANSMIT NONDURABLEオプションを含めます。
マスター・データ・ストア(masterds)のすべての内容をサブスクライバ・データ・ストア(subscriberds)にレプリケートする場合およびログをディスクにフラッシュする処理を除く場合、ELEMENT記述(a)は次のようになります。
ELEMENT a DATASTORE MASTER masterds ON "system1" TRANSMIT NONDURABLE SUBSCRIBER subscriberds ON "system2"TRANSMIT NONDURABLEが設定されている場合にマスター・データ・ストアで障害が発生すると、そのログ・ファイルからマスターをリカバリすることはできません。この場合は、「NONDURABLEデータ・ストアのリカバリ」の手順に従ってください。
RETURN RECEIPTまたはRETURN TWOSAFEサービスを使用すると、レプリケートしたデータがマスターおよびサブスクライバの両方のデータ・ストアで一貫していることをより高いレベルの信頼性を持って保証できます(「レプリケーション・エージェントによって更新をデータ・ストア間でコピーする方法」を参照)。
CREATE REPLICATIONまたはALTER REPLICATION文で定義されるいずれのサブスクライバに対してもRETURNサービス属性を個別に指定できます。また、要素で定義されるすべてのサブスクライバに、同じRETURNサービス属性を指定することもできます。例3.3に、SubDataStore1とSubDataStore2に異なるRETURNサービス属性を個別に定義するSUBSCRIBER句を示します。例3.4に、1つのSUBSCRIBER句を使用して、SubDataStore1とSubDataStore2の両方に同じRETURNサービス属性を定義する例を示します。
CREATE REPLICATION Owner.SchemeName ELEMENT ElementName ElementType MASTER DataStoreName ON "HostName" SUBSCRIBER SubDataStore1 ON "HostName" ReturnServiceAttribute1 SUBSCRIBER SubDataStore2 ON "HostName" ReturnServiceAttribute2;
CREATE REPLICATION Owner.SchemeName ELEMENT ElementName ElementType MASTER DataStoreName ON "HostName" SUBSCRIBER SubDataStore1 ON "HostName", SubDataStore2 ON "HostName" ReturnServiceAttribute;レプリケーション・スキームの各SUBSCRIBERに、次のRETURNサービス属性を定義できます。これらの属性のそれぞれの使用方法については、「RETURNサービスの使用」を参照してください。
RETURNサービス属性 説明 このサブスクライバに対して行われたすべてのトランザクション更新に対してRETURN RECEIPTサービスを有効にします。詳細は、「RETURN RECEIPT」を参照してください。 このサブスクライバに対して行われた特定のトランザクション更新に対してRETURN RECEIPTサービスを有効にします。詳細は、「RETURN RECEIPT BY REQUEST」を参照してください。 このサブスクライバに対して行われたすべてのトランザクション更新に対してRETURN TWOSAFEサービスを有効にします。詳細は、「RETURN TWOSAFE」を参照してください。 このサブスクライバに対して行われた特定のトランザクション更新に対してRETURN TWOSAFEサービスを有効にします。詳細は、「RETURN TWOSAFE BY REQUEST」を参照してください。 このサブスクライバのRETURNサービス(有効になっているサービスに応じてRETURN RECEIPTまたはRETURN TWOSAFEのいずれか)を無効にします(デフォルト)。詳細は、「NO RETURN」を参照してください。
CREATE REPLICATIONまたはALTER REPLICATION文でSTOREパラメータを使用して、1つ以上のデータ・ストアに次に示すオプションの属性を設定できます。最初の3つの属性は、データ・ストアにRETURNサービス障害/リカバリ・ポリシーを設定するために使用されます。これらの属性については、「RETURNサービス・タイムアウト・エラーおよびレプリケーションの状態変化の管理」を参照してください。
STORE属性
|
説明
|
---|---|
レプリケーションが停止された場合は、「RETURNサービス障害/リカバリ・ポリシーの設定」の説明に従って、RETURNサービスを続行または無効にします。 |
|
「RETURNサービス障害/リカバリ・ポリシーの設定」の説明に従って、RETURNサービス障害ポリシーを設定します。 |
|
RETURNサービス・ブロッキングがDISABLE RETURNによって無効になっている場合、この属性は、RETURNサービスを再度有効にするタイミングに関するポリシーを設定します。 |
|
DISABLE RETURNによってRETURNサービス・ブロッキングが無効になった場合、データ・ストアのDurableCommits設定を上書きし、永続コミットを有効にします。 |
|
COMPRESS TRAFFIC | レプリケートの通信量を圧縮して、ネットワーク帯域幅の使用量を減らします。詳細は、「レプリケートの通信量の圧縮」を参照してください。 |
PORT | マスターからの更新をリスニングするためにサブスクライバ・データ・ストアで使用されるポート番号を設定します。PORT属性を設定しない場合、TimesTenデーモンが動的にポートを選択します。TimesTenでは、静的ポート割当ても行うことができますが、動的ポート割当てを行うことをお薦めします。 静的ポート割当ての詳細は、「動的ポート割当ておよび静的ポート割当て」を参照してください。 |
TIMEOUT | 応答のないサブスクライバにメッセージを再送する前にデータ・ストアが待機する最大時間(秒)を設定します。 |
RETURN WAIT TIME | RETURNサービスの応答を待機する時間(秒)を指定します。デフォルト値は10秒です。 アプリケーションでは、ttRepSyncSetプロシージャ内のreturnWaitパラメータをコールすることによって、このタイムアウト設定を上書きできます。 詳細は、「RETURNサービス・タイムアウト時間の設定」を参照してください。 |
LOCAL COMMIT ACTION | タイムアウト発生時にRETURNサービス・トランザクションで実行されるデフォルトのアクションを指定します。オプションは次のとおりです。 NO ACTION: タイムアウト発生時、コミット関数はアプリケーションに返され、トランザクションはコミット・コールに入ったときと同じ状態のままになります。ただし、アプリケーションがレプリケート対象の表を更新できない場合を除きます。アプリケーションはコミットを再発行できます。 COMMIT: タイムアウト発生時に、コミット関数がCOMMITをログ・レコードに書き込み、トランザクションをローカルで効率よく終了します。同じトランザクション上でこれ以上の処理を行うことはできません。 ttRepSyncSetプロシージャでlocalActionパラメータをコールすることによって、特定のトランザクションに対してこのデフォルト設定を無効にすることができます。 |
FAILTHRESHOLD | 「ログ障害しきい値の設定」の説明に従って、ログのしきい値を設定します。 |
RELEASE | 注意: TimesTen 5.0以降のリリースでRELEASE属性を指定するには、静的レプリケーション・ポートを使用していないかぎり、TimesTenのインストール時にデフォルトのTimesTenデーモン・ポート番号を使用するように設定しておく必要があります。 データ・ストアに対して使用するTimesTenリリース番号を指定します。ホストでリリースの異なるTimesTenデーモンを実行している場合、サブスクライバ・データ・ストアが含まれているホストの正しいTimesTenデーモンを検出して問い合せるためにマスター・データ・ストアで使用されるリリース番号を指定する必要があります。サブスクライバに動的に割り当てるポートはTimesTenデーモンで決定する必要があり、ポートを割り当てる方法がTimesTenのリリース間で異なる場合があるため、この指定が必要となります。 |
FAILTHRESHOLDおよびTIMEOUT属性は、特定のレプリケーション・スキーム定義に対して固有に設定できます。つまり、これらの属性は、レプリケート・データ・ストアに異なるレプリケーション・スキーム定義を適用している場合、異なって設定できます。これは、他の属性には適用されません。他の属性は、すべてのレプリケーション・スキーム定義で同じである必要があります。たとえば、1つのスキームにPORTまたはRELEASE属性を設定すると、すべてのスキームにその設定が適用されます。
STORE句を使用してFAILTHRESHOLD属性を設定するレプリケーション・スキームの例は、例3.19を参照してください。DISABLE RETURN属性を設定するレプリケーション・スキームの例は、例3.13および例3.14を参照してください。
低帯域幅のネットワークを介してレプリケーションを行う場合、または大量のデータのレプリケーションを行う場合は、レプリケーションに必要な帯域幅の量を減らすCOMPRESS TRAFFIC属性を設定できます。このCOMPRESS TRAFFIC属性を使用すると、CREATE REPLICATIONまたはALTER REPLICATION文のSTOREパラメータによって指定されたデータ・ストアからレプリケートされたデータが圧縮されます。他のデータ・ストアからのレプリケートの通信量は圧縮されません。
たとえば、データ・ストアdsn1からのレプリケートの通信量は圧縮し、dsn2からのレプリケートの通信量は圧縮しない場合、CREATE REPLICATION文は次のようになります。
CREATE REPLICATION repl.repscheme ELEMENT d1 DATASTORE MASTER dsn1 ON machine1 SUBSCRIBER dsn2 ON machine2 ELEMENT d2 DATASTORE MASTER dsn2 ON machine2 SUBSCRIBER dsn1 ON machine1 STORE dsn1 ON machine1 COMPRESS TRAFFIC ON;dsn1 とdsn2のデータ・ストア間でのレプリケートの通信量を圧縮するには、次のように入力します。
CREATE REPLICATION repl.scheme ELEMENT d1 DATASTORE MASTER dsn1 ON machine1 SUBSCRIBER dsn2 ON machine2 ELEMENT d2 DATASTORE MASTER dsn2 ON machine2 SUBSCRIBER dsn1 ON machine1 STORE dsn1 ON machine1 COMPRESS TRAFFIC ON STORE dsn2 ON machine2 COMPRESS TRAFFIC ON;
PORT属性を割り当てない場合、TimesTenデーモンが動的にポートを選択します(「STORE属性の設定」を参照)。ポートがこの方法でレプリケーション・エージェントに動的に割り当てられる場合は、TimesTenデーモンのポートも一致させる必要があります。
ポートを静的に割り当てる場合は、CREATE REPLICATION文のSTORE属性に完全なホスト名、DSNおよびPORTを指定する必要があります。
例:
CREATE REPLICATION repl.repscheme ELEMENT el1 TABLE repl.tab MASTER dsn1 ON machine1 SUBSCRIBER dsn2 ON machine2 ELEMENT el2 TABLE repl.tab MASTER dsn2 ON machine2 SUBSCRIBER dsn1 ON machine1 STORE dsn1 ON machine1 PORT 16080 STORE dsn2 ON machine2 PORT 16083;TimesTenデーモンおよびレプリケーション・エージェントの役割の概要は、『Oracle TimesTen In-Memory Databaseアーキテクチャ概要』のTimesTenプロセスに関する項を参照してください。